/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.ufjf.pos.model.dao;

import br.ufjf.pos.model.Paciente;
import br.ufjf.pos.model.Usuario;
import br.ufjf.pos.util.GenericDao;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

/**
 *
 * @author cleber
 */
public class PacienteDAO extends GenericDao<Paciente, Integer> {

    @Override
    public void inserir(Paciente obj) throws SQLException, ClassNotFoundException {
        String sql = "INSERT INTO TBpaciente (DFnome) VALUES (?)";
        
        ArrayList<String> lista = new ArrayList<String>();
        lista.add(obj.getNome());
       
        executaDML(sql, lista);
    }

    @Override
    public void alterar(Paciente obj) throws SQLException, ClassNotFoundException {
        ArrayList<String> lista = new ArrayList<String>();
        String sql = "UPDATE TBpaciente SET DFnome = ? WHERE DFid_paciente = ? ";        
        lista.add(obj.getNome());
        lista.add(obj.getIdpaciente()+"");
        //ResultSet rs = executaDML(sql, lista);
        //rs.next();     
        executaDML(sql, lista); 
    }

    @Override
    public void apagar(Paciente obj) throws SQLException, ClassNotFoundException {
        ArrayList<String> lista = new ArrayList<String>();
        String sql = "DELETE FROM TBpaciente WHERE DFid_paciente = ? ";        
        //lista.remove(obj.toString());
        //lista.add(obj.toString());
        lista.add(obj.getIdpaciente() +"");
        
        //ResultSet rs = executaDML(sql, lista);
        //rs.next();
        executaDML(sql, lista);
    }

    @Override
    public Paciente pesquisaChave(Integer obj) throws SQLException, ClassNotFoundException {
        String sql = "SELECT * FROM TBpaciente WHERE DFid_paciente = ? ";
        ArrayList<String> lista = new ArrayList<String>();
        lista.add(obj.toString());

        ResultSet rs = executasql(sql, lista);
        if(rs.next()){                    
            Paciente p = new Paciente(rs.getInt("DFid_paciente"), rs.getString("DFnome"));
            return p;
        } else {
            return null;
        }   
    }


    public boolean isRegistroExistenteBancoDados(String nome) throws SQLException, ClassNotFoundException {
        String sql = "SELECT * FROM TBpaciente WHERE DFnome = ? ";
        ArrayList<String> lista = new ArrayList<String>();
        lista.add(nome);

        ResultSet rs = executasql(sql, lista);
        if(rs.next()){                                
            return true;
        } else {
            return false;
        }   
    }

    public boolean isRegistroExistenteBancoDadosComOutroID(String nome, int idPaciente) throws SQLException, ClassNotFoundException {
        String sql = "SELECT * FROM TBpaciente WHERE DFnome = ? AND DFid_paciente <> ? ";
        ArrayList<String> lista = new ArrayList<String>();
        lista.add(nome);
        lista.add(String.valueOf(idPaciente));

        ResultSet rs = executasql(sql, lista);
        if(rs.next()){                                
            return true;
        } else {
            return false;
        }   
    }
    
    
    @Override
    public ArrayList<Paciente> buscarTodos() throws SQLException, ClassNotFoundException {
        String sql = "SELECT DFid_paciente, DFnome FROM TBpaciente  ";
        ArrayList<String> lista = new ArrayList<String>();        
        
        ArrayList<Paciente> listaPaciente = new ArrayList<Paciente>();
        
        ResultSet rs = executasql(sql, lista);
        while(rs.next()){               
            Paciente p = new Paciente(rs.getInt("DFid_paciente"),rs.getString("DFnome"));
            listaPaciente.add(p);
        } 
     
        return listaPaciente;
    }
    
}
